package com.bawei.base.app

import android.app.Application
import android.content.Context
import android.content.res.Configuration
import com.alibaba.android.arouter.launcher.ARouter
import com.bawei.base.BuildConfig
import com.tencent.mmkv.MMKV

/**
 * Author: Jason Zhang
 * Date: 2025/4/22
 * Desc: APP基类
 */
open class BaseApp : Application(){

    lateinit var appContext: Context

    /**
     * APP挂载时调用
     */
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        if (base != null) {
            appContext = base
        }

    }

    override fun onCreate() {
        super.onCreate()

        //初始化ARouter
        if (BuildConfig.DEBUG) {
            ARouter.openDebug()
            ARouter.openLog()
        }
        ARouter.init(this)

        //初始化MMKV
        MMKV.initialize(this)

    }

    /**
     * APP低内存是调用
     */
    override fun onLowMemory() {
        super.onLowMemory()
        //做一些回收相关的处理，如清理Glide内存缓存，释放大的集合，大对象，或者调用System.gc()
    }

    /**
     * APP配置改变时调用, 如屏幕旋转，语言切换，主题切换等
     */
    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
    }

    /**
     * APP退出时调用
     */
    override fun onTerminate() {
        //在此之前可以保存一些状态，但是不能做耗时操作
        super.onTerminate()
    }

    /**
     * APP内存不足时调用
     */
    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        //根据level的值，做一些内存释放的操作
    }





}